﻿package plugin.NewSkill.handler
{
    import com.core.*;
    import consts.*;
    import flash.utils.*;
    import manager.*;
    import plugin.NewSkill.consts.*;
    import pluginfw.nio.*;
    import pluginfw.nio.imsg.*;
    import view.*;
    import view.uilt.*;

    public class NewSkillHandler extends Object implements IGroupHandler
    {
        private var sCount:int;
        private var cfgSkill:Object;
        private var cfgSkillBook:Object;

        public function NewSkillHandler()
        {
            this.cfgSkill = ConfigDictionary.data.skill;
            this.cfgSkillBook = ConfigDictionary.data.skillbook;
            return;
        }// end function

        public function dealSimpleMessage(param1:ISimpleMessage) : void
        {
            var _loc_2:int = 0;
            var _loc_3:Object = null;
            var _loc_4:Object = null;
            var _loc_5:Object = null;
            var _loc_6:Object = null;
            var _loc_7:Object = null;
            var _loc_8:Object = null;
            var _loc_9:Dictionary = null;
            var _loc_10:int = 0;
            var _loc_11:Object = null;
            var _loc_12:Object = null;
            var _loc_13:Object = null;
            var _loc_14:Boolean = false;
            var _loc_15:Object = null;
            switch(param1.getCmd())
            {
                case CMDSkill.Init:
                {
                    ModelProxy.change("skill", "init", param1.getParam());
                    break;
                }
                case CMDSkill.TurnOn:
                {
                    ModelProxy.change("zone", "turnOnSkill", param1.getParam());
                    break;
                }
                case CMDSkill.SetSkill:
                {
                    ModelProxy.change("fastlist", "setskill", param1.getParam());
                    ModelProxy.change("skill", "setskill", null);
                    break;
                }
                case CMDSkill.SwapSkill:
                {
                    ModelProxy.change("fastlist", "swapset", param1.getParam());
                    ModelProxy.change("skill", "setskill", null);
                    break;
                }
                case CMDSkill.CancelSkill:
                {
                    ModelProxy.change("fastlist", "cancelskill", param1.getParam());
                    ModelProxy.change("skill", "setskill", null);
                    break;
                }
                case CMDSkill.NewSkill:
                {
                    _loc_3 = param1.getParam();
                    _loc_4 = new Object();
                    _loc_5 = ConfigDictionary.data.skill;
                    for each (_loc_10 in _loc_3)
                    {
                        
                        _loc_11 = _loc_5[_loc_10];
                        _loc_4[_loc_10] = _loc_11;
                    }
                    _loc_6 = UserData.getUserData("skills");
                    if (_loc_6 == null)
                    {
                        return;
                    }
                    _loc_7 = ModelProxy.getValue("data", "setskill");
                    _loc_8 = new Object();
                    for each (_loc_12 in _loc_6)
                    {
                        
                        if (_loc_12 is String || _loc_12 is int || _loc_12 is Number)
                        {
                            continue;
                        }
                        if (_loc_12.hasOwnProperty("skillid"))
                        {
                            _loc_8[_loc_12.groupid] = _loc_12;
                        }
                    }
                    _loc_9 = new Dictionary();
                    for each (_loc_12 in _loc_4)
                    {
                        
                        if (_loc_12 == null)
                        {
                            continue;
                        }
                        _loc_13 = null;
                        _loc_14 = false;
                        if (_loc_8[_loc_12.groupid])
                        {
                            _loc_13 = _loc_8[_loc_12.groupid];
                            _loc_6[_loc_8[_loc_12.groupid].skillid] = null;
                            delete _loc_6[_loc_8[_loc_12.groupid].skillid];
                            ModelProxy.change("skill", "showskillup", null);
                        }
                        else
                        {
                            _loc_14 = true;
                        }
                        if (_loc_12.skillid != null)
                        {
                            _loc_6[_loc_12.skillid] = _loc_12;
                            if (_loc_13)
                            {
                                _loc_12.on = _loc_13.on;
                            }
                            else
                            {
                                _loc_12.on = 1;
                            }
                            _loc_12.cdtime = 0;
                        }
                        if (_loc_12.skilltype == 6 || _loc_12.skilltype == 5 || _loc_12.skilltype == 0)
                        {
                            continue;
                        }
                        if (_loc_7)
                        {
                            _loc_2 = 1;
                            while (_loc_2 < 10)
                            {
                                
                                _loc_15 = _loc_7[_loc_2];
                                if (_loc_15 != null && int(_loc_15[1]) > 0)
                                {
                                    _loc_9[_loc_2] = _loc_7[_loc_2];
                                }
                                _loc_2++;
                            }
                        }
                        _loc_2 = 1;
                        while (_loc_2 < 10)
                        {
                            
                            _loc_15 = _loc_9[_loc_2];
                            if (_loc_13 != null)
                            {
                                if (_loc_15 != null)
                                {
                                    if (_loc_15[0] == 1)
                                    {
                                        if (_loc_15[1] == _loc_13.skillid)
                                        {
                                            PluginManager.instance.sendToServer("skill", CMDSkill.SetSkill, {id:_loc_12.skillid, type:1, topos:_loc_2});
                                            if (_loc_12.skillid == 20410)
                                            {
                                                ModelProxy.change("zone", "updateOption", {key:"guajiparam1", data:1});
                                            }
                                            else if (_loc_12.skillid == 21210)
                                            {
                                                ModelProxy.change("zone", "updateOption", {key:"guajiparam2", data:1});
                                            }
                                            _loc_9[_loc_2] = [1, _loc_12.skillid];
                                            break;
                                        }
                                    }
                                }
                            }
                            else if (_loc_15 == null)
                            {
                                if (int(_loc_12.isgaoji) == 0)
                                {
                                    break;
                                }
                                PluginManager.instance.sendToServer("skill", CMDSkill.SetSkill, {id:_loc_12.skillid, type:1, topos:_loc_2});
                                if (_loc_12.skillid == 20410)
                                {
                                    ModelProxy.change("zone", "updateOption", {key:"guajiparam1", data:1});
                                }
                                _loc_9[_loc_2] = [1, _loc_12.skillid];
                                break;
                            }
                            _loc_2++;
                        }
                    }
                    if (_loc_14)
                    {
                        DialogMgr.instance.open(AppDialog.GetSkill, _loc_12.skillid);
                        ModelProxy.change("data", "skillGet" + _loc_12.skillid, true);
                    }
                    if (_loc_12.skillid == Constant.HANBINGPAOXIAOID)
                    {
                        ModelProxy.change("zone", "updateOption", {key:"guajiparam2", data:1});
                    }
                    ModelProxy.change("skill", "update", param1.getParam());
                    this.checkSkill();
                    break;
                }
                default:
                {
                    break;
                }
            }
            return;
        }// end function

        public function dealBufferMessage(param1:IBufferMessage) : void
        {
            var _loc_3:Input = null;
            var _loc_5:int = 0;
            var _loc_6:Object = null;
            var _loc_7:Object = null;
            var _loc_8:int = 0;
            var _loc_9:int = 0;
            var _loc_10:Object = null;
            var _loc_2:* = new Object();
            _loc_3 = new Input(null);
            var _loc_4:* = param1.getBody();
            switch(param1.getCmd())
            {
                case CMDSkill.Refresh:
                {
                    _loc_4.position = 0;
                    _loc_3.setBytes(_loc_4);
                    _loc_2.skillInfoList = new Array();
                    _loc_5 = _loc_3.readShort();
                    _loc_8 = 0;
                    while (_loc_8 < _loc_5)
                    {
                        
                        _loc_9 = _loc_3.readByte();
                        if (_loc_9 != 0)
                        {
                            _loc_2.skillInfoList[_loc_8] = new Object();
                            _loc_2.skillInfoList[_loc_8].skillid = _loc_3.readVarInt(false);
                            _loc_2.skillInfoList[_loc_8].skillProficiency = _loc_3.readVarInt(false);
                        }
                        _loc_8++;
                    }
                    _loc_6 = {};
                    for each (_loc_10 in _loc_2.skillInfoList)
                    {
                        
                        _loc_6[_loc_10.skillid] = _loc_10.skillProficiency;
                    }
                    ModelProxy.change("data", "skillShuLian", _loc_6);
                    ModelProxy.change("skill", "refresh", _loc_2.skillInfoList);
                    this.checkSkill();
                    break;
                }
                case CMDSkill.RefreshShuLian:
                {
                    _loc_4.position = 0;
                    _loc_3.setBytes(_loc_4);
                    _loc_2.skillid = _loc_3.readVarInt(false);
                    _loc_2.num = _loc_3.readVarInt(false);
                    _loc_7 = ModelProxy.getValue("data", "skillShuLian");
                    if (_loc_7 == null)
                    {
                        _loc_7 = new Object();
                    }
                    _loc_7[_loc_2.skillid] = _loc_2.num;
                    ModelProxy.change("skill", "refreshshulian", _loc_2);
                    this.checkSkill();
                    break;
                }
                case CMDSkill.GetShuLian:
                {
                    _loc_4.position = 0;
                    _loc_3.setBytes(_loc_4);
                    _loc_2.num = _loc_3.readVarInt(false);
                    break;
                }
                default:
                {
                    break;
                }
            }
            return;
        }// end function

        public function checkSkill() : void
        {
            var _loc_6:Object = null;
            var _loc_8:Object = null;
            var _loc_9:int = 0;
            var _loc_1:* = UserData.getUserData("skills");
            var _loc_2:* = UserData.getUserData("level");
            this.sCount = 0;
            var _loc_3:int = 0;
            var _loc_4:int = 0;
            var _loc_5:* = ModelProxy.getValue("data", "skillShuLian");
            if (ModelProxy.getValue("data", "skillShuLian") == null)
            {
                return;
            }
            for each (_loc_6 in _loc_1)
            {
                
                if (this.cfgSkill[int(_loc_6.skillid) + 10])
                {
                    _loc_8 = this.cfgSkill[int(_loc_6.skillid) + 10];
                    if (_loc_2 >= int(_loc_8.studylv))
                    {
                        _loc_9 = ItemUilt.getAllCount(this.cfgSkillBook[int(_loc_6.groupid) + 10]);
                        if (_loc_9 > 0)
                        {
                            if (_loc_6.skilltype == 0)
                            {
                                _loc_4++;
                            }
                            else
                            {
                                _loc_3++;
                            }
                            var _loc_12:String = this;
                            var _loc_13:* = this.sCount + 1;
                            _loc_12.sCount = _loc_13;
                            continue;
                        }
                    }
                    else
                    {
                        continue;
                    }
                    if (_loc_5 && int(_loc_5[_loc_6.skillid]) == int(_loc_8.upcount))
                    {
                        if (_loc_6.skilltype == 0)
                        {
                            _loc_4++;
                        }
                        else
                        {
                            _loc_3++;
                        }
                        var _loc_12:String = this;
                        var _loc_13:* = this.sCount + 1;
                        _loc_12.sCount = _loc_13;
                        continue;
                    }
                }
            }
            _loc_4 = _loc_4 > 0 ? (1) : (0);
            _loc_3 = _loc_3 > 0 ? (1) : (0);
            var _loc_7:Array = [this.sCount, _loc_4, _loc_3];
            ModelProxy.change("data", "skillupcount", _loc_7);
            ModelProxy.change("mainview", "updateskillcount", _loc_7);
            return;
        }// end function

        public function dealProxyMessage(param1:IProxyMessage) : void
        {
            return;
        }// end function

    }
}
